#include "u_Oled.h"
#include "Menu.h"
#include "u_Key.h"

void Setting_menu_Style(void);
void Setting_menu_Speed(void);
void WaterSetValue(void);

extern Menu_t MenuVI_Chief[];
extern Menu_t MenuVII_WaterSet[];
extern Menu_t MenuVII_Debug[];
extern Menu_t MenuVII_SetUp[];
extern Menu_t MenuVII_Info[];

// 主菜单
Menu_t MenuVI_Chief[] = {
    {"<<<", NULL, NULL},
    {"时间", NULL, NULL},
    {"水量", NULL, MenuVII_WaterSet},
    {"调试", NULL, MenuVII_Debug},
    {"设置", NULL, MenuVII_SetUp},
    {"信息", NULL, MenuVII_Info},
    {".."},
};

// 二级菜单_水设置
Menu_t MenuVII_WaterSet[] = {
    {"<<<", NULL, MenuVI_Chief},
    {"设置水量(100)", WaterSetValue}, //
    {"零水量校准", NULL},             //
    {"满水量校准", NULL},             //
    {".."},
};
// 二级菜单_调试
Menu_t MenuVII_Debug[] = {
    {"<<<", NULL, MenuVI_Chief},
    {"加热[关]", NULL},
    {"阀门[关]", NULL},
    {"水壶[0]", NULL},
    {"电量(100)", NULL},
    {".."},
};
// 二级菜单_设置
Menu_t MenuVII_SetUp[] = {
    {"<<<", NULL, MenuVI_Chief},
    {"光标风格[反相]", Setting_menu_Style},
    {"动画速度[快]", Setting_menu_Speed},
    {".."},
};
// 二级菜单_信息
Menu_t MenuVII_Info[] = {
    {"<<<", NULL, MenuVI_Chief},
    {"water V100", NULL},
    {".."},
};

// 主要界面
void Chief_Frame_UI(void)
{
    OLED_ShowImage(104, 0, 24, 16, BatteryCharge_24x16); // 显示充电图像
    OLED_ShowImage(0, 0, 24, 16, ICON_Link_24x16);       // 连接图标

    // 时间显示
    OLED_ShowNum(42, 5, 18, 2, OLED_6X8);          // 时
    OLED_ShowChar(42 + 16 - 4, 5, ':', OLED_6X8);  //
    OLED_ShowNum(42 + 16, 5, 30, 2, OLED_6X8);     // 分
    OLED_ShowChar(42 + 32 - 3, 5, ':', OLED_6X8);  //
    OLED_ShowNum(42 + 32 + 2, 5, 50, 2, OLED_6X8); // 秒

    // 装饰线
    OLED_DrawLine(0, 18, 32, 18);   // 画线
    OLED_DrawLine(96, 18, 128, 18); // 画线
    OLED_DrawLine(0, 58, 32, 58);   // 画线
    OLED_DrawLine(96, 58, 128, 58); // 画线

    OLED_DrawLine(32, 18, 42, 24);  // 画线
    OLED_DrawLine(96, 18, 86, 24);  // 画线
    OLED_DrawLine(32, 58, 42, 50);  // 画线
    OLED_DrawLine(96, 58, 86, 50);  // 画线
    OLED_DrawCircle(64, 38, 20, 0); // 圆

    OLED_ShowNum(10, 29, 30, 2, OLED_8X16);                       // 水量数据
    OLED_ShowNum(57, 29, MenuVII_WaterSet[1].Data, 2, OLED_8X16); // 倒计时数据
    OLED_ShowNum(100, 29, 30, 2, OLED_8X16);                      // 加热时间数据

    if (1)
    {
        OLED_DrawLine(8, 26, 28, 26);    // 画线
        OLED_DrawLine(120, 26, 100, 26); // 画线
    }

    OLED_ShowChar(10 + 17, 36, '%', OLED_6X8);  // 显示百分号
    OLED_ShowChar(100 + 17, 36, 'm', OLED_6X8); // 显示秒
    OLED_ShowChar(62, 46, 's', OLED_6X8);       // 显示秒
}
// 多级菜单调试
void OLED_Menu_Debug(void)
{
    OLED_Init();
    // SetRunDesktop = Chief_Frame_UI;
    SetRunList = MenuVI_Chief; // 运行界面设置成设置界面

    MenuVII_WaterSet[1].Data = 95; // 设置倒计时数据
    MenuVII_Debug[4].Data = 90;

    while (1)
    {
        OLED_Menu_Handle();
        KEY_All_event_Handle();
    }
}

/****************************************************************************************/

// 水量设置
void WaterSetValue(void)
{
    if (DataAlterFlag == 0)
    {
        DataAlterFlag = 1;
        StripY_Next = STRIPY_SHOW;
    }
    else if (DataAlterFlag == 1)
    {
        DataAlterFlag = 0;
        StripY_Next = STRIPY_HIDE;
    }
} /**********************************************************/
// 设置光标样式
void Setting_menu_Style(void)
{
    if (CurStyle == reverse)
    {
        CurStyle = mouse;
        // MenuVII_SetUp[1].Name = "光标风格[鼠标]";
        update_Data(MenuVII_SetUp[1].Name, 200);
    }
    else if (CurStyle == mouse)
    {
        CurStyle = frame;
        // MenuVII_SetUp[1].Name = "光标风格[矩形]";
        update_Data(MenuVII_SetUp[1].Name, 300);
    }
    else // if(CurStyle == frame)
    {
        CurStyle = reverse;
        MenuVII_SetUp[1].Name = "光标风格[反相]";
        update_Data(MenuVII_SetUp[1].Name, 400);
    }
}
// 设置动画速度
void Setting_menu_Speed(void)
{
    if (CursorRollSpeed == 8)
    {
        CursorRollSpeed = 16;
        MenuRollSpeed = 1.1;
        MenuVII_SetUp[2].Name = "动画速度[慢]";
    }
    else if (CursorRollSpeed == 16)
    {
        CursorRollSpeed = 1;
        MenuRollSpeed = 16;
        MenuVII_SetUp[2].Name = "动画速度[关]";
    }
    else // if(CursorRollSpeed == 16)
    {
        CursorRollSpeed = 8;
        MenuRollSpeed = 2;
        MenuVII_SetUp[2].Name = "动画速度[快]";
    }
}
